iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Python

pythonGUI學習筆記系列 第 24

Day 24: PySide6 QPaint 和 QPen 繪圖

  • 分享至 

  • xImage
  •  

QPaint 和 QPen 繪圖

  • QPen : 畫筆。裡面可以設定顏色,粗細,和線條的樣式。

  • QPaint : 是一個繪圖類別,他可以在我們的 QWidgetQPismap 上繪圖操作,例如直線和圓形等,也可以自訂繪圖。

QPen 的設定

QPen(brush , color , width , s , c , j ):

  • color : 設定顏色。
  • brush : 如果不想只用單一顏色的話,可以使用brush,但需要配合使用 QBrush 設定顏色,不只單一顏色,還可以使用漸變等複雜的代替一班顏色。
  • width : 粗細。
  • s : 樣式(style) 畫筆的線條樣式。可以使用下面的樣式。
功能 方法
實線 Qt.SolidLine
虛線 Qt.DashLine
點線 Qt.DotLine
點和虛線 Qt.DashDotLine
兩點加虛線 Qt.DashDotDotLine
  • c : 端點樣式,決定線條的末端樣式。
功能 方法
平直 Qt.FlatCap
圓形端點 Qt.SquareCap
端點以正方形的方式延展一點 Qt.RoundCap
  • j : 接合樣式,當兩條線段相交時決定接合點的樣式。
功能 方法
斜角接合 Qt.BevelJoin
尖角接合 Qt.MiterJoin
圓角接合 Qt.RoundJoin

QPaint 繪製

  • drawLine(x1, y1, x2, y2): 繪製從 (x1, y1) 到 (x2, y2) 的線條。
  • drawRect(x, y, width, height): 繪製矩形。
  • drawEllipse(x, y, width, height): 繪製橢圓或圓形。
  • drawText(x, y, text): 在指定位置繪製文字。
  • drawPixmap(x, y, pixmap): 在指定位置繪製圖像。

QPaint 使用

要使用 QPainter 進行繪圖,我們需要重載 paintEvent() 方法,並在其中進行繪圖操作。paintEvent() 是一個系統自動調用的函數,每次視窗需要重繪時,PySide6 都會觸發這個事件。

QPaint 範例

下面是把筆設定成紅色,然後粗細設為3,然後用實線。

from PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtGui import QPainter, QPen
from PySide6.QtCore import Qt

class PaintExample(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QPaint 示例")
        self.resize(400, 300)

    def paintEvent(self, event):
        painter = QPainter(self)

        # 設置畫筆
        pen = QPen(Qt.red, 3, Qt.SolidLine)
        painter.setPen(pen)

        # 繪製一條直線
        painter.drawLine(50, 50, 200, 50)

        # 繪製矩形
        painter.drawRect(50, 80, 150, 100)

        # 繪製圓形
        painter.drawEllipse(50, 200, 100, 100)

        # 繪製文字
        painter.drawText(200, 250, "QPainter 測試")

if __name__ == "__main__":
    app = QApplication([])
    window = PaintExample()
    window.show()
    app.exec()

總結

  • QPen(brush , color , width , s , c , j )

    • brush : 自定筆刷顏色,如果不想單一顏色,可以用這個。
    • color : 設定顏色。
    • width : 線的粗細。
    • s : 畫筆的線條樣式。
    • c : 端點樣式。
    • j : 接合樣式。
  • QPaint 繪製

功能 方法
線條 drawLine(x1, y1, x2, y2)
矩形 drawRect(x, y, width, height)
橢圓或圓形 drawEllipse(x, y, width, height)
文字 drawText(x, y, text)
圖像位置 drawPixmap(x, y, pixmap)
  • QPaint 使用 : 記得函數名要打對。

上一篇
Day 23: PySide6 播放影片
下一篇
Day 25: PySide6 鼠標事件
系列文
pythonGUI學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言